package org.example.aienglishapp.JPARepository;

import org.example.aienglishapp.entity.login.User;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface UserRepository extends JpaRepository<User, Long> {

    // 根据用户名查找用户
    User findByUserName(String userName); // 确保属性名一致

    // 根据用户状态查找所有用户
    List<User> findByUserStatus(Integer userStatus); // 确保属性名一致

    // 查找所有用户（分页）
    Page<User> findAll(Pageable pageable);

    // 根据 User ID 更新用户状态
    @Modifying
    @Query("UPDATE User u SET u.userStatus = :userStatus WHERE u.userId = :userId")
    void updateUserStatus(@Param("userId") Long userId, @Param("userStatus") Integer userStatus); // 修改方法名为 updateUserStatus

    // 检查用户名是否存在
    Boolean existsByUserName(String userName); // 确保属性名一致

    // 新增：检查某个角色是否有用户拥有
    @Query("SELECT COUNT(u) > 0 FROM User u JOIN u.roles r WHERE r.id = :roleId")
    boolean hasUsersWithRole(@Param("roleId") Long roleId);
}